package main

import (
	"fmt"
)

/*
 语法：
 func (绑定的方法的结构体名)方法名(入参 入参类型)(返回值 返回值类型){}
 func (s StructType)funcName(param1 param1Type,...)(returnVal1 returnType1, ...){}
*/

// 定义结构体
type person2 struct {
	name string
	age  int
}

// 定义结构体方法(结构体方法只能结构体可以调用)------值传递结构体接收器(使用的时候是复制一个结构体副本到这个方法)
func (p1 person2) prf() {
	fmt.Printf("name is %s  age is %d\n", p1.name, p1.age)
}

// 指针传递结构体接收器(这是结构体方法的另外一种状态，当结构体很大，复制副本不太好时用这个，go做了处理，使用结构体时可以当做结构体值来使用)
func (p1 *person2) prf2() {
	fmt.Printf("name is %s  age is %d\n", p1.name, p1.age)
}

func main() {
	q1 := person2{
		name: "jiang",
		age:  22,
	}
	//调用结构体方法
	q1.prf() //name is jiang  age is 22
}
